/*
 * Agenda.cpp
 *
 *  Created on: 20/08/2012
 *      Author: Ian Ferreira Costa
 */

#include "Agenda.h"

Agenda::Agenda(){
	quantidade = 0;
}

Agenda::~Agenda(){
	itens.clear();
}

void Agenda::atualizarAgenda(int dia,int mes,int ano,int hora, int min, Vacina va){

	ItemAgenda auxiliar(dia,mes,ano,hora,min,va.getDescricao());
	quantidade++;
	itens.push_front(auxiliar);

	for(list<ItemAgenda>::iterator lista = itens.begin(); lista != itens.end(); lista++){
        if(Data::getDataSistema() > (*lista).getDataAg()){
            itens.erase(lista);
        	quantidade-=1;
        }
    }
}

void Agenda:: consultarAgenda(){
	list <ItemAgenda> :: iterator lista;
	lista = itens.begin();
	cout << "Consultas: " << quantidade << endl << endl;
	while(lista != itens.end()){
		cout << "Data de Agendamento:  "  << (*lista).getDataAg() << endl;
		cout << "Data de Atendimento:  "  << (*lista).getDataAt() << endl;
		cout << "Horario :             "  << (*lista).getHorario();
		cout << "Vacina a ser tomanda: "  << (*lista).getVacina() << endl << endl;
		lista++;
	}
	cout << endl << "Fim" << endl;
}

bool Agenda::excluirItemAgenda(int pos){
    list<ItemAgenda>::iterator itensIter = itens.begin();

    for(int i = 0; i < pos; i++){

        if(itensIter == itens.end())
            return false;

        ++itensIter;
    }

    itens.erase(itensIter);
    return true;
}

Agenda::Agenda(Agenda &copiar){

	list <ItemAgenda> :: iterator lista;
	lista = itens.begin();

	while (lista != itens.end()){
		copiar.itens.push_back((*lista));
	}

}

ostream &operator<<(ostream &out, Agenda &ag){
	out << ag.quantidade << endl;
	list <ItemAgenda> :: iterator itensIter = ag.itens.begin();
	while(itensIter != ag.itens.end()){
		out << *itensIter << endl;
		itensIter++;
	}
	return out;
}

istream &operator>>(istream &in, Agenda &ag){
	in >> ag.quantidade;
	in.ignore();
	int auxiliarContador = ag.quantidade;
	int dia, mes, ano, hora, min, diaN, mesN, anoN;
	string va;
	while(auxiliarContador){
		in >> diaN;
		in.ignore(1);
		in >> mesN;
		in.ignore(1);
		in >> anoN;
		in.ignore();
		in >> hora;
		in.ignore(1);
		in >> min;
		in.ignore();
		in >> dia;
		in.ignore(1);
		in >> mes;
		in.ignore(1);
		in >> ano;
		in.ignore();
		in >> va;
		ItemAgenda auxiliarItemAgenda(dia, mes, ano, hora, min, va , diaN, mesN, anoN);
		ag.itens.push_back(auxiliarItemAgenda);
		auxiliarContador--;
		in.ignore();
		in.ignore();
	}
	return in;
}
